/**
 * # 找筷子
## 题目描述
经过一段时间的紧张筹备，电脑小组的“RP 餐厅”终于开业了，这天，经理 LXC 接到了一个定餐大单，可把大家乐坏了！员工们齐心协力按要求准备好了套餐正准备
 派送时，突然碰到一个棘手的问题:筷子！
CX 小朋友找出了餐厅中所有的筷子，但遗憾的是这些筷子长短不一，而我们都知道筷子需要长度一样的才能组成一双，更麻烦的是 CX 找出来的这些筷子数量为奇数
 ，但是巧合的是，这些筷子中只有一只筷子是落单的，其余都成双，善良的你，可以帮 CX 找出这只落单的筷子的长度吗？
## 输入格式
第一行是一个整数，表示筷子的数量 $n$。
第二行有 $n$ 个整数，第 $i$ 个整数表示第 $i$ 根筷子的长度 $a_i$。
## 输出格式
输出一行一个整数表示答案。
## 样例 #1
### 样例输入 #1
```
9
2 2 1 3 3 3 2 3 1
```
*/
#include <stdio.h>

void quickSort(int *arr, int left, int right) {  //arr是数组，left是起始下标，right是结束下标

    if (left >= right) return;
    int base = arr[left], arr_l = left, arr_r = right;
    while (arr_l < arr_r) {
        while (arr_l < arr_r && arr[arr_r] >= base) arr_r--;
        arr[arr_l] = arr[arr_r];
        while (arr_l < arr_r && arr[arr_l] <= base) arr_l++;
        arr[arr_r] = arr[arr_l];
    }

    arr[arr_r] = base;
    quickSort(arr, left, arr_r - 1);
    quickSort(arr, arr_r + 1, right);
}

int main() {
    int num;
    scanf("%d", &num);
    int chops[num];
    for (int i = 0; i < num; i++) {
        scanf("%d", &chops[i]);
    }

    quickSort(chops, 0, num - 1);  //10个数字下标就是0-9

    int i = 0;
    while (chops[i] == chops[i + 1]) {
        if (i + 1 > num) {
            printf("%d", chops[i]);
            break;
        } else if (i + 1 <= num) i += 2;
    }
    printf("%d", chops[i]);
}

